class Solution {
    public int firstUniqChar(String s) {
        Map<Character, int[]> map = new HashMap<>();
        List<Pair<Character,Integer>> list = new ArrayList<>();
        for(int i=0; i<s.length(); i++){
            char c = s.charAt(i);
            int[] index = map.getOrDefault(c, new int[]{-1,-1});
            if(index[0] == -1){
                list.add(new Pair<Character, Integer>(c, 1));
                map.put(c, new int[]{i,list.size()-1});
            }else{
                list.set(index[1], new Pair<Character,Integer>(c, list.get(index[1]).getValue()+1));
            }
        }
        for(int i=0; i<list.size(); i++){
            if(list.get(i).getValue()==1){
                return map.get(list.get(i).getKey())[0];
            }
        }
        return -1;
    }
}